home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 2
/
Atari Mega Archive CD - Volume 2.iso
/
8bit
/
cislib_a
/
bugs5.act
< prev
next >
Wrap
Text File
|
1995-04-22
|
8KB
|
291 lines
ACTION! BUG SHEET #3 - part 5
-------------------------------------
ACTION MANUAL ERRATA
First of all, you need to know which
version of the manual you have. If
Part III is the Language, then you
have the first version of the manual.
Otherwise, you have the second
(newest) version. Unfortunately,
both manuals contain content as well
as typographical errors. We'll skip
the typos and concentrate on the
content errors, since typos don't
impair your understanding of the
language (although you may wonder
where we learned to spell).
VERSION 1 ERRATA:
PAGE ERROR
2 In the last paragraph, it says
that the library is on the
disk. This is not true. It's
in your cartridge.
23 Under the description of
<BACK-S>, the comparison with
the Atari screen editor is
exactly reversed. If you are
in REPLACE mode, this key
works as in the Atari editor.
26 Under <CTRL><SHIFT>T, it says
you may not use lower-case
characters as tags. This is
untrue.
48 In the NOTE preceeding 4.3,
you should add "The *, /, and
MOD operators result in an
implied INT type. For this
reason, multiplication,
division, and modulus of large
CARD numbers does not always
work properly."
49 Section 4.4 says that you may
only have one special operator
in a complex relational
expression. This is untrue.
For example, the following is
perfectly legal:
(x=7 AND y#10) OR z<100
82 Section 6.2.3 implies that you
may not use a function as a
procedure. This is not true.
You may call a function as
though it were a procedure,
but the value returned from
the function is ignored.
97 Section 8.1.1 states that you
may either initialize a
POINTER to an address or give
it a value. Only the second
is possible, and you should
use this form:
BYTE POINTER x=<value>
Not this:
BYTE POINTER x=[<value>]
99 In example #1 there are two
PrintF statements which have
"ptr" as one parameter. These
should be "bptr", not "ptr".
101 In the last example of ARRAY
declaration (BYTE ARRAY
tests(5)...), the dimension is
overruled by the
initialization options, and so
its dimension is only three.
To fill only the first 3 of 5
elements, do the following:
BYTE ARRAY tests(5)=
[4 7 18 0 0]
104 In example #3 you see the
program line "PrintE(b)".
This should read
"PrintE(barray)".
108 Section 8.3.1.2 states that
you can initialize the fields
of a record when you declare
it. This is untrue; you may
only initialize its address.
110 The program line "rec.level =
InputB()" should read
"rec.level = GetD(7)".
112 Same as previous error.
115 Same as previous error.
112 The program line
"continue=InputB()" should
read "continue=GetD(7)"
120 The program line
"mode=InputB()" should read
"mode=GetD(7)", and the
program line "PrintE(name)"
should read "PrintE(nameptr)".
115 Same as previous error.
122 The program line
"incctr=chgclr" should read
"incclr=chgclr".
142 Section 5.3 states that you
should not use channel 7.
ACTION! uses this channel to
get characters from the
keyboard, and you may use it
to do this also. However,
don't close this channel or
alter its configuration in any
way.
153 The example of declaring an
ACTION! procedure at an
address is wrong! If you do
this, the internal pointer to
the procedure will point to
the specified address, but the
code generated by the
procedure will not be there.
Instead, it will be in with
your main code. Use procedure
and function addressing ONLY
to call machine language
routines.
161 Where the table of contents
lists the routines in section
2.3, it should read:
PrintBD NOT PrintDB
PrintCD NOT PrintDC
PrintID NOT PrintDI
162 Where the table of contents
lists the routines in sections
6.7 and 6.8, it should read:
PeekC NOT CPeek
PokeC NOT CPoke
165 Error in section 2.3. See
changes for pg. 161 and make
similar corrections.
179 Section 6.4 states some
information concerning the
results of misusing the SCopy
routine, detailing that the
routine does string trucation,
etc., to make the procedure
work. This is not true. You
must make sure that the
strings are compatible in
size.
181 Section 6.8 states that the
parameters to Poke and PokeC
consist only of an address.
Instead, they consist of an
address and a value, as
follows:
Poke(<address>,<BYTE value>)
PokeC(<address>,<CARD value>)
182 Section 6.11. MoveBlock will
move a maximum block of 256
bytes in versions 3.0 to 3.4
of ACTION! Versions 3.5 and
up will move any number of
bytes.
191 Some error numbers are wrong.
The corrections are:
14 Out of Space
15 Missing DO
19 Missing OD
24 Illegal FOR statement
26 Nesting Too Deep
27 Illegal TYPE reference
28 Illegal RETURN
128 BREAK key abort
Also, error 62 is error 61,
and 54 & 56 do not exist.
197 In the PrintF statement, %D
should be changed to %U.
VERSION 2 ERRATA:
PAGE ERROR
38 Section 2.7, paragraph 3. The
last sentence states that you
can RUN compiled ACTION!
programs from disk. This is
untrue. The RUN command will
only compile and run ACTION!
source files. Use DOS to run
compiled object files.
39 The last RUN example (RUN
PrintE()) will not work, since
RUN expects a file name. Use
the "Xecute" command instead.
63 In the TECHNICAL NOTE
preceeding section 4.3, "*"
should be changed to "*, /, or
MOD".
126 The last assignment on the
page makes newrecord point to
the current record in the
array, not the end of the
array.
132 The program line
"mode=InputB()" should be
changed to "mode=GetD(7)".
138 The program line "IF
sub(1)=str(ctr)" should read
"IF sub(1)=str(ctrl)".
163 The PutDE procedure requires
only a channel as a parameter,
and does not put out both a
character and a <RETURN>.
Rather, it puts out a <RETURN>
only.
172 In graphics mode 0 and all
text windows, color 1 is the
character luminance, color 2
is the background color, and
color 3 is unused.
174 In section 5.6, references to
the "lower right corner"
should instead be "lower left
corner".
180 Section 6.1.2 states some
information concerning the
results of misusing the SCopy
routine, detailing that the
routine does string
truncating, etc. This is not
true. You must make sure that
the strings are compatible in
size.
182 Section 6.11. MoveBlock will
move a maximum block of 256
bytes in versions 3.0 to 3.4
of ACTION! Versions 3.5 and
up will move any number of
bytes.